 /*
    *  Copyright 2004 Thevert Liu  <thevert.liu@gmail.com>
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
    *  You may obtain a copy of the License at
    *
    *      http://www.apache.org/licenses/LICENSE-2.0
    *
   *  Unless required by applicable law or agreed to in writing, software
  *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
#include <XMLParser.h>

ICreator<IXMLParser>::CreateFunc XMLParser::mCreate = NULL;

bool XMLParser::parse(const std::string & xmlbody, 
                      const std::string& name, 
                      IXMLElement& result, 
                      std::string& error, 
                      XMLContext* ctx
                      ) 
{
    IXMLParser * parser = mCreate() ;
    if (!parser) 
    {
        return false ;
    }

    bool ret = parser->parse(xmlbody, name, result, error, ctx) ;
    
    delete parser ;    
    
    return ret ;
}

bool XMLParser::toXML(IXMLElement& root, 
                      std::ostream& os, 
                      XMLContext* ctx)
{
    IXMLParser * parser = mCreate() ;
    if (!parser) 
    {
        return false ;
    }

    bool ret = parser->toXML(root, os, ctx) ;
    
    delete parser ;    
    
    return ret ;
}

